Hướng dẫn dự đoán LLM

API suy luận LLM cho phép bạn chạy các mô hình ngôn ngữ lớn (LLM) hoàn toàn trên thiết bị. Bạn có thể sử dụng API này để thực hiện nhiều tác vụ, chẳng hạn như tạo văn bản, truy xuất thông tin ở dạng ngôn ngữ tự nhiên và tóm tắt tài liệu. Tác vụ này tích hợp sẵn tính năng hỗ trợ cho nhiều mô hình ngôn ngữ lớn từ văn bản sang văn bản, nhờ đó, bạn có thể áp dụng các mô hình AI tạo sinh mới nhất trên thiết bị cho ứng dụng và sản phẩm của mình.

Hãy dùng thử!

Tác vụ này cung cấp tính năng hỗ trợ tích hợp cho nhiều LLM. Các mô hình được lưu trữ trên trang LiteRT Community có sẵn ở định dạng phù hợp với MediaPipe và không yêu cầu thêm bước chuyển đổi hoặc biên dịch nào.

Bạn có thể sử dụng AI Edge Torch để xuất các mô hình PyTorch sang các mô hình LiteRT (tflite) đa chữ ký, được đóng gói với các tham số trình tạo mã thông báo để tạo Gói tác vụ. Các mô hình được chuyển đổi bằng AI Edge Torch tương thích với API suy luận LLM và có thể chạy trên phần phụ trợ CPU, phù hợp với các ứng dụng Android và iOS.

Bắt đầu

Bắt đầu sử dụng tác vụ này bằng cách làm theo một trong các hướng dẫn triển khai sau đây cho nền tảng mục tiêu của bạn. Các hướng dẫn dành riêng cho nền tảng này sẽ hướng dẫn bạn cách triển khai cơ bản nhiệm vụ này, với các ví dụ về mã sử dụng mô hình có sẵn và các tuỳ chọn cấu hình được đề xuất:

Thông tin chi tiết về việc cần làm

Phần này mô tả các tính năng, dữ liệu đầu vào, dữ liệu đầu ra và tuỳ chọn cấu hình của tác vụ này.

Tính năng

API suy luận LLM chứa các tính năng chính sau:

  1. Tạo văn bản từ văn bản – Tạo văn bản dựa trên câu lệnh văn bản đầu vào.
  2. Lựa chọn LLM – Áp dụng nhiều mô hình để điều chỉnh ứng dụng cho các trường hợp sử dụng cụ thể của bạn. Bạn cũng có thể huấn luyện lại và áp dụng trọng số tuỳ chỉnh cho mô hình.
  3. Hỗ trợ LoRA – Mở rộng và tuỳ chỉnh chức năng LLM bằng mô hình LoRA bằng cách huấn luyện trên tất cả tập dữ liệu của bạn hoặc lấy các mô hình LoRA tạo sẵn được chuẩn bị sẵn từ cộng đồng nguồn mở (không tương thích với các mô hình được chuyển đổi bằng API tạo sinh AI Edge Torch).
Dữ liệu đầu vào của việc cần làm Kết quả của tác vụ
API suy luận LLM chấp nhận các dữ liệu đầu vào sau:
  • Câu lệnh dạng văn bản (ví dụ: câu hỏi, tiêu đề email, tài liệu cần tóm tắt)
API suy luận LLM sẽ xuất ra các kết quả sau:
  • Văn bản được tạo dựa trên câu lệnh nhập (ví dụ: câu trả lời cho câu hỏi, email nháp, bản tóm tắt tài liệu)

Tuỳ chọn cấu hình

Tác vụ này có các tuỳ chọn cấu hình sau:

Tên tuỳ chọn Mô tả Phạm vi giá trị Giá trị mặc định
modelPath Đường dẫn đến vị trí lưu trữ mô hình trong thư mục dự án. ĐƯỜNG DẪN Không áp dụng
maxTokens Số lượng mã thông báo tối đa (mã thông báo đầu vào + mã thông báo đầu ra) mà mô hình xử lý. Số nguyên 512
topK Số lượng mã thông báo mà mô hình xem xét ở mỗi bước tạo. Giới hạn các dự đoán ở k mã thông báo có nhiều khả năng nhất. Số nguyên 40
temperature Mức độ ngẫu nhiên được đưa vào trong quá trình tạo. Nhiệt độ cao hơn sẽ tạo ra văn bản sáng tạo hơn, trong khi nhiệt độ thấp hơn sẽ tạo ra văn bản dễ dự đoán hơn. Số thực dấu phẩy động 0,8
randomSeed Giá trị khởi tạo ngẫu nhiên được dùng trong quá trình tạo văn bản. Số nguyên 0
loraPath Đường dẫn tuyệt đối đến mô hình LoRA cục bộ trên thiết bị. Lưu ý: tính năng này chỉ tương thích với các mô hình GPU. ĐƯỜNG DẪN Không áp dụng
resultListener Đặt trình nghe kết quả để nhận kết quả một cách không đồng bộ. Chỉ áp dụng khi sử dụng phương thức tạo không đồng bộ. Không áp dụng Không áp dụng
errorListener Đặt trình nghe lỗi không bắt buộc. Không áp dụng Không áp dụng

Mô hình

API suy luận LLM hỗ trợ nhiều mô hình ngôn ngữ lớn từ văn bản sang văn bản, bao gồm cả tính năng hỗ trợ tích hợp cho một số mô hình được tối ưu hoá để chạy trên trình duyệt và thiết bị di động. Bạn có thể dùng các mô hình nhẹ này để chạy các phép suy luận hoàn toàn trên thiết bị.

Trước khi khởi chạy API suy luận LLM, hãy tải một mô hình xuống và lưu trữ tệp trong thư mục dự án. Bạn có thể sử dụng mô hình được chuyển đổi trước từ kho lưu trữ HuggingFace của Cộng đồng LiteRT hoặc chuyển đổi mô hình sang định dạng tương thích với MediaPipe bằng Trình chuyển đổi tạo sinh AI Edge Torch.

Nếu bạn chưa có LLM để sử dụng với API suy luận LLM, hãy bắt đầu với một trong các mô hình sau.

Gemma-3 1B

Gemma-3 1B là mô hình mới nhất trong bộ mô hình Gemma gồm các mô hình mở, hiện đại và có kích thước nhỏ được xây dựng từ cùng một nghiên cứu và công nghệ dùng để tạo ra các mô hình Gemini. Mô hình này chứa 1 tỷ tham số và trọng số mở. Biến thể 1B là mẫu nhẹ nhất trong gia đình Gemma, phù hợp với nhiều trường hợp sử dụng trên thiết bị.

Tải Gemma-3 1B xuống

Mô hình Gemma-3 1B của HuggingFace có sẵn ở định dạng .task và sẵn sàng sử dụng với API suy luận LLM cho các ứng dụng Android và Web.

Khi chạy Gemma-3 1B bằng API suy luận LLM, hãy định cấu hình các tuỳ chọn sau cho phù hợp:

  • preferredBackend: Sử dụng tuỳ chọn này để chọn giữa phần phụ trợ CPU hoặc GPU. Lựa chọn này chỉ dành cho Android.
  • supportedLoraRanks: Không thể định cấu hình API suy luận LLM để hỗ trợ tính năng Điều chỉnh theo thứ hạng thấp (LoRA) bằng mô hình Gemma-3 1B. Không sử dụng tuỳ chọn supportedLoraRanks hoặc loraRanks.
  • maxTokens: Giá trị của maxTokens phải khớp với kích thước ngữ cảnh được tích hợp vào mô hình. Bạn cũng có thể gọi đây là bộ nhớ đệm Khoá-Giá trị (KV) hoặc độ dài ngữ cảnh.
  • numResponses: Phải luôn là 1. Lựa chọn này chỉ dành cho Web.

Khi chạy Gemma-3 1B trên các ứng dụng web, quá trình khởi chạy có thể gây ra một khối dài trong luồng hiện tại. Nếu có thể, hãy luôn chạy mô hình từ luồng worker.

Gemma-2 2B

Gemma-2 2B là một biến thể 2B của Gemma-2 và hoạt động trên tất cả các nền tảng.

Tải Gemma-2 2B xuống

Mô hình này chứa các tham số 2B và trọng số mở. Gemma-2 2B được biết đến với kỹ năng suy luận hiện đại cho các mô hình trong lớp.

Chuyển đổi mô hình PyTorch

Bạn có thể chuyển đổi các mô hình tạo sinh PyTorch sang định dạng tương thích với MediaPipe bằng API tạo sinh AI Edge Torch. Bạn có thể sử dụng API này để chuyển đổi các mô hình PyTorch thành mô hình LiteRT (TensorFlow Lite) nhiều chữ ký. Để biết thêm thông tin chi tiết về cách liên kết và xuất mô hình, hãy truy cập vào trang GitHub của AI Edge Torch.

Việc chuyển đổi mô hình PyTorch bằng API tạo sinh AI Edge Torch bao gồm các bước sau:

  1. Tải các điểm kiểm tra mô hình PyTorch xuống.
  2. Sử dụng API AI Edge Torch Generative để tạo, chuyển đổi và lượng tử hoá mô hình thành định dạng tệp tương thích với MediaPipe (.tflite).
  3. Tạo Gói tác vụ (.task) từ tệp tflite và trình phân tích cú pháp mô hình.

Trình chuyển đổi Torch Generative chỉ chuyển đổi cho CPU và yêu cầu máy Linux có RAM tối thiểu 64 GB.

Để tạo Gói tác vụ, hãy sử dụng tập lệnh đóng gói để tạo Gói tác vụ. Quy trình đóng gói sẽ đóng gói mô hình đã liên kết bằng siêu dữ liệu bổ sung (ví dụ: Tham số trình phân tích cú pháp) cần thiết để chạy quy trình suy luận toàn diện.

Quy trình đóng gói mô hình yêu cầu gói MediaPipe PyPI. Tập lệnh chuyển đổi có trong tất cả các gói MediaPipe sau 0.10.14.

Cài đặt và nhập các phần phụ thuộc bằng cách sau:

$ python3 -m pip install mediapipe

Sử dụng thư viện genai.bundler để gói mô hình:

import mediapipe as mp
from mediapipe.tasks.python.genai import bundler

config = bundler.BundleConfig(
    tflite_model=TFLITE_MODEL,
    tokenizer_model=TOKENIZER_MODEL,
    start_token=START_TOKEN,
    stop_tokens=STOP_TOKENS,
    output_filename=OUTPUT_FILENAME,
    enable_bytes_to_unicode_mapping=ENABLE_BYTES_TO_UNICODE_MAPPING,
)
bundler.create_bundle(config)
Thông số Mô tả Giá trị được chấp nhận
tflite_model Đường dẫn đến mô hình TFLite đã xuất của AI Edge. ĐƯỜNG DẪN
tokenizer_model Đường dẫn đến mô hình bộ phân tích cú pháp SentencePiece. ĐƯỜNG DẪN
start_token Mã thông báo bắt đầu cụ thể của mô hình. Mã thông báo bắt đầu phải có trong mô hình trình tạo mã thông báo được cung cấp. STRING
stop_tokens Mã thông báo điểm dừng cụ thể của mô hình. Mã thông báo dừng phải có trong mô hình trình tạo mã thông báo được cung cấp. LIST[STRING]
output_filename Tên của tệp gói tác vụ đầu ra. ĐƯỜNG DẪN

Tuỳ chỉnh LoRA

Bạn có thể định cấu hình API suy luận LLM của Mediapipe để hỗ trợ tính năng Điều chỉnh theo thứ hạng thấp (LoRA) cho các mô hình ngôn ngữ lớn. Bằng cách sử dụng các mô hình LoRA được tinh chỉnh, nhà phát triển có thể tuỳ chỉnh hành vi của LLM thông qua một quy trình huấn luyện tiết kiệm chi phí.

Tính năng hỗ trợ LoRA của API suy luận LLM hoạt động cho tất cả các biến thể Gemma và mô hình Phi-2 cho phần phụ trợ GPU, với trọng số LoRA chỉ áp dụng cho các lớp chú ý. Phương thức triển khai ban đầu này đóng vai trò là một API thử nghiệm cho các hoạt động phát triển trong tương lai, với kế hoạch hỗ trợ nhiều mô hình và nhiều loại lớp hơn trong các bản cập nhật sắp tới.

Chuẩn bị mô hình LoRA

Làm theo hướng dẫn trên HuggingFace để huấn luyện mô hình LoRA được tinh chỉnh trên tập dữ liệu của riêng bạn bằng các loại mô hình được hỗ trợ, Gemma hoặc Phi-2. Các mô hình Gemma-2 2B, Gemma 2BPhi-2 đều có trên HuggingFace ở định dạng safetensors. Vì API suy luận LLM chỉ hỗ trợ LoRA trên các lớp chú ý, nên chỉ chỉ định các lớp chú ý trong khi tạo LoraConfig như sau:

# For Gemma
from peft import LoraConfig
config = LoraConfig(
    r=LORA_RANK,
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)

# For Phi-2
config = LoraConfig(
    r=LORA_RANK,
    target_modules=["q_proj", "v_proj", "k_proj", "dense"],
)

Để thử nghiệm, có các mô hình LoRA được tinh chỉnh công khai phù hợp với API suy luận LLM có trên HuggingFace. Ví dụ: monsterapi/gemma-2b-lora-maths-orca-200k cho Gemma-2B và lole25/phi-2-sft-ultrachat-lora cho Phi-2.

Sau khi huấn luyện trên tập dữ liệu đã chuẩn bị và lưu mô hình, bạn sẽ nhận được một tệp adapter_model.safetensors chứa các trọng số mô hình LoRA được tinh chỉnh. Tệp safetensors là điểm kiểm tra LoRA được dùng trong quá trình chuyển đổi mô hình.

Ở bước tiếp theo, bạn cần chuyển đổi trọng số mô hình thành Flatbuffer của TensorFlow Lite bằng Gói Python MediaPipe. ConversionConfig phải chỉ định các tuỳ chọn mô hình cơ sở cũng như các tuỳ chọn LoRA bổ sung. Xin lưu ý rằng vì API chỉ hỗ trợ suy luận LoRA bằng GPU, nên bạn phải đặt phần phụ trợ thành 'gpu'.

import mediapipe as mp
from mediapipe.tasks.python.genai import converter

config = converter.ConversionConfig(
  # Other params related to base model
  ...
  # Must use gpu backend for LoRA conversion
  backend='gpu',
  # LoRA related params
  lora_ckpt=LORA_CKPT,
  lora_rank=LORA_RANK,
  lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)

converter.convert_checkpoint(config)

Trình chuyển đổi sẽ xuất ra hai tệp flatbuffer TFLite, một tệp cho mô hình cơ sở và tệp còn lại cho mô hình LoRA.

Suy luận mô hình LoRA

API suy luận LLM cho Web, Android và iOS được cập nhật để hỗ trợ suy luận mô hình LoRA.

Android hỗ trợ LoRA tĩnh trong quá trình khởi chạy. Để tải mô hình LoRA, người dùng chỉ định đường dẫn mô hình LoRA cũng như LLM cơ sở.

// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
        .setModelPath('<path to base model>')
        .setMaxTokens(1000)
        .setTopK(40)
        .setTemperature(0.8)
        .setRandomSeed(101)
        .setLoraPath('<path to LoRA model>')
        .build()

// Create an instance of the LLM Inference task
llmInference = LlmInference.createFromOptions(context, options)

Để chạy quy trình suy luận LLM bằng LoRA, hãy sử dụng các phương thức generateResponse() hoặc generateResponseAsync() giống như mô hình cơ sở.